package com.parenting.service;

import com.parenting.entities.ParentingShopDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.parenting.model.IMPage;
import com.parenting.model.UserDTO;
import com.parenting.request.*;
import com.parenting.request.platform.AddPlatformShopRequest;
import com.parenting.request.platform.ExamineApprove;
import com.parenting.request.platform.ShopSearchConditionRequest;
import com.parenting.response.UnclaimedListResponse;
import com.parenting.response.platform.ClaimNotice;
import com.parenting.response.platform.PageShopListResponse;
import com.parenting.response.platform.StoreDetailsResponse;

import java.util.List;

/**
 * <p>
 * 店铺主表 服务类
 * </p>
 *
 * @author 烟台业达-王世玺
 * @since 2021-08-18
 */
public interface ParentingShopService extends IService<ParentingShopDO> {


    /****
     *  新增店铺
     * @param userDTO  当前登录人信息
     * @param shop  店铺实体类
     */
    void   saveShop(UserDTO userDTO,ShopSaveRequest shop);

    /****
     * 平台新增店铺
     * @param shop
     */
    void   savePlatformShop(AddPlatformShopRequest shop);

    /***
     * 修改店铺
     * @param shop 店铺对象
     * @return
     */
    void updateShop(ShopUpdateRequest shop);

    /***
     * 未认领的店铺列表 查询所有为认领的店铺
     * @return
     */
    IMPage<UnclaimedListResponse> ListOfUnclaimedShops(UnclaimedListConditionRequest unclaimedListCondition);
    /***
     * 店铺认领
     * @param userDTO
     * @param shopId
     */
    void ClaimShop(UserDTO userDTO, ShopAutRequest shopId);
    /****
     * 店铺校验
     * @param shop
     * @return
     */
    boolean chekShop(ChekShopRequest shop);


    /***
     * 平台端店铺 列表
     * @param request
     * @return
     */
   IMPage<PageShopListResponse> pageShopList(ShopSearchConditionRequest request);

    /****
     * 店铺详情查询
     * @param id
     * @return
     */
    StoreDetailsResponse getShopById(String id);



     void deleteShopById(String id);

    /****
     * 店铺认领通知列表
     * @return
     */
    List<ClaimNotice> getClaimNoticeList(Integer state);

    /***
     * 认领审批
     * @param examineApprove
     */
    void updateExamineShop(ExamineApprove examineApprove);
}
